In [1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import calendar
import datetime

#!!!!!!change to your file here
data = pd.read_csv("/Users/kamile/Desktop/Data Analysis and Visualization/Week 1/Police_SF_DATA.csv", low_memory=False) 

focuscrimes = set(['WEAPON LAWS', 'PROSTITUTION', 'DRIVING UNDER THE INFLUENCE', 'ROBBERY', 'BURGLARY', 'ASSAULT', 'DRUNKENNESS', 'DRUG/NARCOTIC', 'TRESPASS', 'LARCENY/THEFT', 'VANDALISM', 'VEHICLE THEFT', 'STOLEN PROPERTY', 'DISORDERLY CONDUCT'])
focuscrimes = sorted(focuscrimes)

data['Date'] = pd.to_datetime(data['Date'])
data['Date'] = data['Date'].dt.year 
data = data[data.Date != 2018]



Data_Thefts = data[data['Category'] == "VEHICLE THEFT"].reset_index(drop=True)

Thefts_per_district = Data_Thefts.groupby(by=["PdDistrict"]).size().reset_index(name="Number_of_Thefts")

Thefts_per_district = Thefts_per_district.rename(columns={"PdDistrict": "District", "Number_of_Thefts": "Number of Vehicle Thefts"})

min_thefts = Thefts_per_district['Number of Vehicle Thefts'].min() 
max_thefts = Thefts_per_district['Number of Vehicle Thefts'].max() 
min_thefts = min_thefts 
max_thefts = max_thefts 

from urllib.request import urlopen
import json
with urlopen('https://raw.githubusercontent.com/suneman/socialdata2022/main/files/sfpd.geojson') as response:
    counties = json.load(response)

counties["features"][0]

from urllib.request import urlopen
import json

import plotly.express as px

fig = px.choropleth_mapbox(Thefts_per_district, geojson=counties, locations='District', color='Number of Vehicle Thefts',
                           #color_continuous_scale=["white", "darkgoldenrod"],
                           #color_continuous_scale="Cividis_r",
                           color_continuous_scale="Greys",
                           #reversescale=True,
                           range_color=(min_thefts, max_thefts),
                           mapbox_style="carto-positron",
                           zoom=11.2, 
                           center = {"lat": 37.7749, "lon": -122.4194},
                           opacity=0.8
                        
                          )
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.show()
In [ ]: